import cv2
import numpy as np
img1=cv2. imread('./img/2.jpg')#加载图像
img2=cv2. imread('./img/1.jpg')
rows,cols,channels=img2.shape
roi=img1[0:rows, 0:cols]#取img1的这个区域来处理
img2gray=cv2.cvtColor(img2, cv2. COLOR_BGR2GRAY)#建立logo的二值图,也建立相反的二值图
ret, mask= cv2.threshold(img2gray, 175, 255, cv2. THRESH_BINARY)#二值化
mask_inv=cv2.bitwise_not(mask)  # 做非操作,黑的变白,自的变黑,黑色0,白色255
img1_bg=cv2.bitwise_and(roi, roi,mask = mask)   #与操作,参数输入,输出,与mask做and操作,黑色的被填充
img2_fg=cv2.bitwise_and(img2, img2, mask = mask_inv)    #与操作
dst= cv2. add (img1_bg,img2_fg)    #相加
img1[0:rows, 0:cols ]=dst           #把添加了logo的该区域赋值回原来的地方
cv2. imshow('img2gray',img2gray)        #显示整个过程中的中间结果和最终结果
cv2. imshow('ret', ret)
cv2. imshow('mask', mask)
cv2.imshow('mask_inv', mask_inv)
cv2. imshow('img1 bg', img1_bg)
cv2.imshow('img2_fg',img2_fg)
cv2.imshow('dst', dst)
cv2.imshow('res',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()